package com.zrc.japktool.util;

public class HexUtils {

    // 辅助方法：将整数ID格式化为0x后跟8位十六进制（大写）
    public static String formatHexId(int id) {
        return "0x" + String.format("%08X", id).toLowerCase();
    }

    /**
     * 将多个十六进制数相加（支持32位溢出计算）
     * @param hexNumbers 要相加的十六进制数（int类型）
     * @return 相加结果的十六进制字符串（格式"0x000001F7"）
     */
    public static String addHex(int... hexNumbers) {
        if (hexNumbers == null || hexNumbers.length == 0) {
            return "0x00000000"; // 如果没有参数，返回0
        }
        int sum = 0;
        for (int num : hexNumbers) {
            sum += num;
        }
        return formatHexId(sum);
    }

    /**
     * 将最低字节（0x000000AB → 0xAB000000）
     * @param hexValue 输入的32位整数（如 0x0000007F）
     * @return 最低字节移动到最高字节后的十六进制字符串（如 0x7F000000）
     */
    public static String moveLowByteToHigh(int hexValue) {
        return "0x" + String.format("%08X", hexValue << 24);
    }

    /**
     * 测试用例
     */
    public static void main(String[] args) {
        //System.out.println(addHex(0x00000000, 0x00010000,0xF0000000)); // 0xE0100000
        System.out.println(moveLowByteToHigh(0x0000007F)); // 0xE0100000
    }
}